/*
    jquery-image-viewer
    A input text replacement that appends text to input fields and removes it on focus. Respects prepopulated fields.
    Built by Dana Woodman
*/
(function($) {
    $.fn.input_replacement = function(options) {
        // Compile default options and user specified options.
        var opts = $.extend({}, $.fn.input_replacement.defaults, options);
        return $(this).each(function() {
            var obj = $(this);
            // Build element specific options.
            obj.o = $.meta ? $.extend({}, opts, $this.data()) : opts;
            // If field is empty, append text, classes, etc...
            if (obj.val() == '') {
                obj.val(obj.o.text);
                if (obj.o.prefocus_class) {
                    obj.addClass(obj.o.prefocus_class);
                };
                // Focus on the input has occurred.
                obj.bind('focus', function() {
                    if (obj.val() == obj.o.text) {
                        obj.val('');
                    };
                    if (obj.o.prefocus_class) {
                        obj.removeClass(obj.o.prefocus_class);
                    };
                });
                // Focus has been lost.
                obj.bind('blur', function() {
                    if (obj.val() == '') {
                        obj.val(obj.o.text);
                        if (obj.o.prefocus_class) {
                            obj.addClass(obj.o.prefocus_class);
                        };
                    };
                });
                // Clear out the values on reload so they arent loaded after refresh.
                $(window).unload(function() {
                   if (obj.val() == obj.o.text) {
                       obj.val('');
                   }; 
                });
                // If nothing was entered, make sure the "text" is not submitted by removing it.
                var form = obj.parents('form'); //.map(function () { return this.tagName; }).get().join(", ");
                if (form) {
                    form.each(function() {
                        $(form).bind('submit', function() {
                            if (obj.val() == obj.o.text) {
                                obj.val() = '';
                            };
                        });
                    });
                };
            };
        });
    };
    
    $.fn.input_replacement.defaults = {
        text: 'Search...', // The text to put in the empty input field.
        prefocus_class: '' // A class to be applied to empty input field. Gets removed after 'focus'.
    };
})(jQuery);